package com.keitaitoys.fonteditor.gui.optionpane;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.net.URL;

import com.keitaitoys.fonteditor.core.LocaleManager;
import com.keitaitoys.fonteditor.core.Manager;
import com.keitaitoys.fonteditor.event.LocaleChangeEvent;
import com.keitaitoys.fonteditor.event.LocaleChangeListener;

public class DetailsButton extends JButton implements ActionListener {

	//////////////////////////////////////////////////////////////////////
	// Description ///////////////////////////////////////////////////////
	//////////////////////////////////////////////////////////////////////

	//////////////////////////////////////////////////////////////////////
	// Consts ////////////////////////////////////////////////////////////
	//////////////////////////////////////////////////////////////////////

	private static final String CAPTION_LOCALIZE_KEY = "optionpane.button.details.caption";

	//////////////////////////////////////////////////////////////////////
	// Variables /////////////////////////////////////////////////////////
	//////////////////////////////////////////////////////////////////////

	private DetailsPanel errorPane;
	
	private ImageIcon hideIcon;
	private ImageIcon showIcon;
	
	private boolean hide;
	
	//////////////////////////////////////////////////////////////////////
	// Constructor ///////////////////////////////////////////////////////
	//////////////////////////////////////////////////////////////////////

	public DetailsButton(DetailsPanel errorPane) {
		
		this.errorPane = errorPane;
		
		init();
	}

	//////////////////////////////////////////////////////////////////////
	// Functions /////////////////////////////////////////////////////////
	//////////////////////////////////////////////////////////////////////

	private void init() {
		
		setEnabled(true);
		setMnemonic(KeyEvent.VK_D);

		URL url = getClass().getResource("img/iconhide.png");
		hideIcon = url != null ? new ImageIcon(url) : new ImageIcon();

		url = getClass().getResource("img/iconshow.png");
		showIcon = url != null ? new ImageIcon(url) : new ImageIcon();

		setIcon(hide ? hideIcon : showIcon);
		
		LocaleManager localeManager = LocaleManager.getInstance();
		setText(localeManager.getValue(CAPTION_LOCALIZE_KEY));
		
		addActionListener(this);
	}

	//////////////////////////////////////////////////////////////////////
	// Functions /////////////////////////////////////////////////////////
	//////////////////////////////////////////////////////////////////////

	public void actionPerformed(ActionEvent e) {
		
		hide = !hide;
		
		setIcon(hide ? hideIcon : showIcon);
		
		errorPane.executeDetails();
	}
}